const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

/**
 * 促销控制器 - 管理促销相关的API接口
 */

// 获取促销设置
exports.getPromotionSettings = async (req, res) => {
  try {
    // 查找现有的促销设置
    const settings = await prisma.promotionSetting.findFirst();
    
    if (settings) {
      return res.status(200).json({
        status: 'success',
        data: JSON.parse(settings.config)
      });
    } else {
      // 如果不存在，返回空对象
      return res.status(200).json({
        status: 'success',
        data: {}
      });
    }
  } catch (error) {
    console.error('获取促销设置失败:', error);
    return res.status(500).json({
      status: 'error',
      message: '获取促销设置失败',
      error: error.message
    });
  }
};

// 保存促销设置
exports.savePromotionSettings = async (req, res) => {
  try {
    const settingsData = req.body;
    
    // 查找现有的促销设置
    const existingSettings = await prisma.promotionSetting.findFirst();
    
    if (existingSettings) {
      // 更新现有设置
      await prisma.promotionSetting.update({
        where: { id: existingSettings.id },
        data: {
          config: JSON.stringify(settingsData),
          updatedAt: new Date()
        }
      });
    } else {
      // 创建新设置
      await prisma.promotionSetting.create({
        data: {
          config: JSON.stringify(settingsData)
        }
      });
    }
    
    return res.status(200).json({
      status: 'success',
      message: '保存成功'
    });
  } catch (error) {
    console.error('保存促销设置失败:', error);
    return res.status(500).json({
      status: 'error',
      message: '保存促销设置失败',
      error: error.message
    });
  }
};

// 获取商品渠道价格
exports.getProductChannelPrices = async (req, res) => {
  try {
    // 从数据库获取所有商品渠道价格
    const channelPrices = await prisma.productPrice.findMany({
      select: {
        productId: true,
        channelId: true,
        price: true
      }
    });
    
    return res.status(200).json({
      status: 'success',
      data: channelPrices
    });
  } catch (error) {
    console.error('获取商品渠道价格失败:', error);
    return res.status(500).json({
      status: 'error',
      message: '获取商品渠道价格失败',
      error: error.message
    });
  }
};

// 更新商品渠道价格
exports.updateProductChannelPrice = async (req, res) => {
  try {
    const { productId, channelId, price } = req.body;
    
    // 参数验证
    if (!productId || !channelId || price === undefined) {
      return res.status(400).json({
        status: 'error',
        message: '缺少必要参数'
      });
    }
    
    // 查找现有价格
    const existingPrice = await prisma.productPrice.findFirst({
      where: {
        productId,
        channelId
      }
    });
    
    if (existingPrice) {
      // 更新现有价格
      await prisma.productPrice.update({
        where: {
          id: existingPrice.id
        },
        data: {
          price: parseFloat(price)
        }
      });
    } else {
      // 创建新价格
      await prisma.productPrice.create({
        data: {
          productId: parseInt(productId),
          channelId: parseInt(channelId),
          price: parseFloat(price)
        }
      });
    }
    
    return res.status(200).json({
      status: 'success',
      message: '价格更新成功'
    });
  } catch (error) {
    console.error('更新商品渠道价格失败:', error);
    return res.status(500).json({
      status: 'error',
      message: '更新商品渠道价格失败',
      error: error.message
    });
  }
}; 